package com.abewy.android.apps.klyph.core; import java.util.Locale; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.preference.PreferenceManager; public class KlyphLocale { private static final String APP_LOCALE_KEY = "preference_app_language"; private static final String FB_LOCALE_KEY = "preference_fb_language"; private static final String DEFAULT = "default"; public static void setAppLocale(String language) { if (language == null || language.length() == 0 || language.equals(DEFAULT)) { language = getDeviceLocale(); } Locale locale; if (language.contains("_")) { /* handle special language code, in language-country format */ String array[] = language.split("_"); locale = new Locale(array[0], array[1]); } else { locale = new Locale(language); } Locale.setDefault(locale); Configuration config = BaseApplication.getInstance().getResources().getConfiguration(); config.locale = locale; BaseApplication.getInstance().getResources().updateConfiguration(config, BaseApplication.getInstance().getResources().getDisplayMetrics()); } public static String getAppLocale() { return getPreferences().getString(APP_LOCALE_KEY, DEFAULT); } public static void defineLocale(Context context) { String language = getPreferences().getString(APP_LOCALE_KEY, DEFAULT); if (language == null || language.length() == 0 || language.equals(DEFAULT)) { language = getDeviceLocale(); } Locale locale; if (language.contains("_")) { /* handle special language code, in language-country format */ String array[] = language.split("_"); locale = new Locale(array[0], array[1]); } else { locale = new Locale(language); } Locale.setDefault(locale); Configuration config = BaseApplication.getInstance().getResources().getConfiguration(); config.locale = locale; context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); } public static String getFbLocale() { String locale = getPreferences().getString(FB_LOCALE_KEY, DEFAULT); if (locale.equals(DEFAULT)) return KlyphSession.getSessionUser().getLocale(); return locale; } public static String getDeviceLocale() { Locale locale = Locale.getDefault(); return locale.getLanguage(); } private static SharedPreferences getPreferences() { return PreferenceManager.getDefaultSharedPreferences(BaseApplication.getInstance()); } }